package es.gesfutbol.validator;

import org.springframework.validation.Errors;

import es.gesfutbol.util.AbstractGesFutbolValidator;
import es.gesfutbol.web.backbean.PenyaBackBean;

public class AdministrarPenyaValidator extends AbstractGesFutbolValidator{

	private String COMB_GENERAL_NOT_NUMERIC = "Las combinaciones generales deben contener valores numéricos";
	private String SUMA_COMBINACIO = "La suma de la combinación general no puede ser mayor que 15";
	private String PERCENTATGE_NOT_NUMERIC = "Los porcentajes deben contener valores numéricos";
	private String SUMA_PERCENTATGES = "La suma de los porcentages no puede ser mayor que 100";
	private String FIX1 = "generalFix1";
	private String DOBLE1 = "generalDob1";
	private String TRIPLE1 ="generalTrip1";
	private String FIX2 = "generalFix2";
	private String DOBLE2 = "generalDob2";
	private String TRIPLE2 = "generalTrip2";	
	private String FIX3 = "generalFix3";
	private String DOBLE3 = "generalDob3";
	private String TRIPLE3 = "generalTrip3";
	private String ENFRONTAMENTS_ANTERIORS = "encuentroAnterior";
	private String CLASSIFICACIO = "classificacion";
	private String LOCAL = "jugarLocal";
	private String PRIMERA_VOLTA = "primeraVuelta";
	private String ULTIMS_RESULTATS = "ultimosResultados";

	@Override
	public boolean supports(Class<?> clazz) {
		return PenyaBackBean.class.isAssignableFrom(clazz);
	}
	@Override
	public void validate(Object target, Errors errors) {

		PenyaBackBean penyaBB = (PenyaBackBean) target;
		
		//Validem si la combinació general 1 és numèrica i si suma menys o igual a 15
		if(!rejectIfNotIntegerValue(errors, FIX1, COMB_GENERAL_NOT_NUMERIC)
				&& !rejectIfNotIntegerValue(errors, DOBLE1, COMB_GENERAL_NOT_NUMERIC)
				&& !rejectIfNotIntegerValue(errors, TRIPLE1, COMB_GENERAL_NOT_NUMERIC)){

			Integer i1 = Integer.valueOf(penyaBB.getGeneralFix1());
			Integer i2 = Integer.valueOf(penyaBB.getGeneralDob1());
			Integer i3 = Integer.valueOf(penyaBB.getGeneralTrip1());

			if(i1+i2+i3>15){
				errors.rejectValue(FIX1, "", SUMA_COMBINACIO);
			}
		}
		//Validem si la combinació general 2 és numèrica i si suma menys o igual a 15
		if(!rejectIfNotIntegerValue(errors, FIX2, COMB_GENERAL_NOT_NUMERIC)
				&& !rejectIfNotIntegerValue(errors, DOBLE2, COMB_GENERAL_NOT_NUMERIC)
				&& !rejectIfNotIntegerValue(errors, TRIPLE2, COMB_GENERAL_NOT_NUMERIC)){

			Integer i1 = Integer.valueOf(penyaBB.getGeneralFix2());
			Integer i2 = Integer.valueOf(penyaBB.getGeneralDob2());
			Integer i3 = Integer.valueOf(penyaBB.getGeneralTrip2());

			if(i1+i2+i3>15){
				errors.rejectValue(FIX2, "", SUMA_COMBINACIO);
			}
		}
		//Validem si la combinació general 3 és numèrica i si suma menys o igual a 15
		if(!rejectIfNotIntegerValue(errors, FIX3, COMB_GENERAL_NOT_NUMERIC)
				&& !rejectIfNotIntegerValue(errors, DOBLE3, COMB_GENERAL_NOT_NUMERIC)
				&& !rejectIfNotIntegerValue(errors, TRIPLE3, COMB_GENERAL_NOT_NUMERIC)){

			Integer i1 = Integer.valueOf(penyaBB.getGeneralFix3());
			Integer i2 = Integer.valueOf(penyaBB.getGeneralDob3());
			Integer i3 = Integer.valueOf(penyaBB.getGeneralTrip3());

			if(i1+i2+i3>15){
				errors.rejectValue(FIX3, "", SUMA_COMBINACIO);
			}
		}
		//Validem els percentatges.
		if(!rejectIfNotIntegerValue(errors, ENFRONTAMENTS_ANTERIORS, PERCENTATGE_NOT_NUMERIC)
				&& !rejectIfNotIntegerValue(errors, CLASSIFICACIO, PERCENTATGE_NOT_NUMERIC)
				&& !rejectIfNotIntegerValue(errors, LOCAL, PERCENTATGE_NOT_NUMERIC)
				&& !rejectIfNotIntegerValue(errors, PRIMERA_VOLTA, PERCENTATGE_NOT_NUMERIC)
				&& !rejectIfNotIntegerValue(errors, ULTIMS_RESULTATS, PERCENTATGE_NOT_NUMERIC)){

			Integer i1 = penyaBB.getEncuentroAnterior();
			Integer i2 = penyaBB.getClassificacion();
			Integer i3 = penyaBB.getPrimeraVuelta();
			Integer i4 = penyaBB.getUltimosResultados();
			Integer i5 = penyaBB.getJugarLocal();

			if(i1+i2+i3+i4+i5>100){
				errors.rejectValue(ENFRONTAMENTS_ANTERIORS, "", SUMA_PERCENTATGES);
			}
		}
	}
}
